About Victor Kropp

A software engineer in Munich, Germany.

The RSS's url is : https://victor.kropp.name/blog/index.xml

Please copy to your reader or subscribe it with :

Preview of RSS feed of Victor Kropp

LEGO McLaren Formula 1 Racing Car

2024-05-13 02:58:23

Since childhood, I’ve been a huge LEGO fan. I had not many toys growing up, and spent most of the time playing with a limited number of LEGO sets. When I grew up, I remembered my old passion and together with my wife we started building a LEGO collection.

Our LEGO collection on display in the living room

Our LEGO collection on display in the living room

I’ve been also a huge Formula 1 fan since 1997. And in recent years, I’ve become a McLaren fan and, especially, Lando Norris’ fan. I was extremely happy when he won his first race last Sunday.

And I got a perfectly timed present to the Father’s Day, which was celebrated on May 9 this year.

LEGO McLaren MCL60 2023 Racing Car ©LEGO

LEGO McLaren MCL60 2023 Racing Car ©LEGO

Although this is last year’s car, it doesn’t matter much. I’ve enjoyed building it together with my kids today, and it took its place on my shelf.


This is post 3 of #100DaysToOffload

Wings for Life World Run 2024

2024-05-11 01:28:23

After the finish in the Olympiastadion

After the finish in the Olympiastadion

Last Sunday I took part in the Wings for Life World Run – a charity run to collect funds for spinal cord research. Under the motto “we run for those who can’t” a quarter-million of runners start all over the world at exact 11 UTC on the first Sunday of May since 2014.

I like this event for its unique formula: there is no finish line, your race ends when a catcher car overtakes you. It starts 30 minutes behind everyone, but quickly gains speed. So the faster you run, the further you can get.

The first run in Munich took place in 2015. I was in peak physical condition around that time, just run a marathon in Paris a few weeks before, so I managed to cover a pretty impressive 28¼ km.

Steady decline

Next year I missed the event, but I had a good reason for that, as I finished Ironman 70.3 Mallorca on the same day. I returned to Wings for Life in 2016 and completed 19.4 kilometres and from then onwards it all went downhill:

2017 19.40 km

2018 17.43 km

2019 17.42 km

I remember little from those runs, with the 2017 edition being a notable exception, though. And for a very bizarre reason: a horde of sheeps, donkeys and even a cow decided to join the movement and ran with us for a good kilometer or two. Of course, it was unplanned and unexpected. And even though it sounds funny, at one point I was a little bit scared running alongside a cow, because I had no idea what could happen.

Oh, and then pandemics 😷 happened. The flagship run in Munich was obviously canceled. Instead, everyone around the world ran from a virtual catcher car in their neighborhoods. That was an interesting experience, as I’ve met around 5 to 7 other runners participating in the event, and we cheered each other, while keeping a social distance of 1.5 metres between us.

The story repeated itself in 2021, and I’m glad it was the last time so. Due to the absolute lack of training, I’ve managed to run only 10 or so kilometers and then walk for another kilometer before a virtual catcher reached me.

It wasn’t a result I could be proud of. I was crushed and ashamed. I was so frustrated that I skipped the run altogether the next year. For the first time ever. Sigh.

I continued running very irregularly, sometimes skipping months of training and never ran more than 7 kilometers. Wings for Life World Run 2023 was even shorter than 2021 for me.

That could have been an end. And indeed, I again stopped running for many months.

Lignano Sabbiadoro

Up until our vacation in a lovely Lignano Sabbiadoro in Italy last summer. One evening, my wife asked me if I wanted to go for a run. I hesitated a bit, but she insisted and I went out.

Lignano Pineta

Lignano Pineta

And what a run it turned out! Beautiful pine forest, nice houses, beach, lighthouse, sunset and thunderstorms on the horizon.

I was pumped and decided not to skip any runs anymore. So I started running regularly once again. Oh, how I enjoyed it.

I started slowly, but soon was confident enough to increase the distance. I ran 10 kilometers and wasn’t dying. Then twelve, then fifteen… And then I decided to register for Wings for Life World Run.

2024 edition

My goal this year was to run a half-marathon distance, which I would need to run in 1 hour 55 minutes according to the distance calculator, prepared by organizers.

I started in the second group (out of four), and lost 2 minutes even before I crossed the start line. Another minute or so I spent in a traditional traffic jam right after the start, where the narrow bridge almost stops the crowd of runners.

Well, I thought, that means I now need to pick up the pace and run 10–20 seconds faster per kilometer than planned. It started raining right there, it helped to cool down, and didn’t slow me at all. Even better, it allowed me to skip the first three water stations.

I was enjoying my run as I caught half-marathon pacemakers I’ve briefly seen in front of the pack. I rested a few kilometers behind their backs, only to continue my own run ahead of them.

Meanwhile, the rain ended and the sun came out. And I had just enough strength left in my legs to finish strong. It was my second-best result at this event, I reached my goal, and I’m absolutely satisfied and relieved.

Next up: Munich Marathon in October.


This is post 2 of #100DaysToOffload

#100DaysToOffload

2024-05-11 01:26:10

I love endurance challenges. Doing something once is one thing, keeping repeating it consistently for a long period of time is completely different. I’m a human being, and as such I’m lazy and always avoid unnecessary work. Commiting to a challenge keeps me motivated to do things, I could abandon long ago.

I want to motivate myself to write more often, and today I start a #100DaysToOffload.

My goal is to write 100 blog posts in the next year, so the deadline is set to May, 9 2025.

Wish me luck!


This is post 1 of #100DaysToOffload

April 2024 Reading List

2024-04-25 22:10:44

Read it later

The Mystery of the Bloomfield Bridge

A fascinating read about the mysterious bridge in the middle of nowhere and the story behind it. Great investigation which goes 70 years back in time.

Building Under Regulation

An essay on the EU Digital Markets Act and Apple’s “Update on apps distributed in the European Union” by Steven Sinofsky.

The best engineering interview question I’ve ever gotten

Hands-on approach to interviewing candidates with real-world tasks.

Big Tech passkey implementations are a trap

Totally agree! Corporations took another opportunity to lock everyone in their walled garden.

Brag now, remember later: Document your accomplishments

I’ve seen many examples when people did amazing things, but told nobody.

Your future self will thank you: Building your personal documentation

Another article from the same series. There’s a lot of stuff worth documenting, from places to visit to your home server setup.

Write about what you learn. It pushes you to understand topics better

Every time I sit down to write an article for my blog, I learn something new.

App of the Month

Apple Fitness+

I’ve started three-month trial of Apple Fitness+ recently, and I am super impressed with it. It provides a variety of training activities for different level of fitness with HIIT and Core trainings among my favorites.

I also finally got the taste of rowing, and it appeared to be super fun, with good intensity, but low impact.

Mindful cooldowns and yoga help me stretch before and after runs, and guided meditations are great for mental health.

Overall, I recommend everyone to give it a try!

GitHub Highlight of the Month

Github scottbez1/smartknob

SmartKnob is an open-source knob button with built-in display and software-configurable endstops and virtual detents.

Check out the video to see it in action.

Once upon a time on Wikipedia

Playing with Rust

2024-04-16 21:47:25

Ferris 3D model by Ray March

Ferris 3D model by Ray March

I wanted to learn the Rust programming language for quite some time already. And last year I got a nice opportunity to do so.

JetBrains has announced RustRover—an IDE built specifically for Rust. And in the Toolbox App we had a task perfectly suited to be a first small program in the new language.

I started writing this blog post after completing the original task, but decided to test my skills on a few more occasions before publishing it.

So here are my notes as a Rust newbie.

Task 1. Helper tool

The task was to create a native messaging host application for the browser extension.

If you haven’t used the extension before, it helps you to quickly open any GitHub project right in your favorite IDE. But to know what your favorite IDE is and what else you have installed, it needs to communicate with the application. Here the helper app comes into play. Both extension and installed app register themselves, letting the browser know it can trust them.

In our case, the extension then gets the list of installed IDEs on the user’s computer. Before that, it needed to guess, and it didn’t work well in many cases.

At first, we tried implementing the helper in Kotlin Native and were not satisfied with the result. I then made an attempt to re-implement it in Rust.

Ecosystem

Rust ecosystem is huge. It seems that for every need there is already a crate (a redistributable package in the Rust world). And what’s even more impressive, all the crates I’ve seen so far are of great quality and are well-maintained.

For example, there is one implementing native messaging protocol. But since it is pretty straightforward, I decided to not use the existing solution and instead implement it myself.

Talking to a browser requires sending and receiving JSONs. And here Rust features a great serde crate, which implements serialization and deserialization for your structures in the compile time. Neat! I like the similar approach in kotlinx.serialization.

Borrow checker

It went surprisingly well, and even the borrow checker wasn’t able to spoil the party. In fact, in such a simple case, the most straightforward solution one implements is the best. It is readable, works fast and doesn’t require complicated mutability. Which means you don’t need to deal with the borrow checker.

Error handling

Error handling is also nicely integrated into the language. I prefer this explicitness over hidden exceptions in languages like Java and C++. On the other hand, it is much less ugly than in Go.

Performance

My program is fairly simple and works instantly, as expected. The compilation and build infrastructure is much easier to set up than we had to do with C++. And I hope that we’ll be able to replace all native pieces written in C++ we have right now with Rust.

Task 2. Advent of Code

After completing the extension helper, I worried that my Rust skills would become a bit rusty (pun intended). As the next challenge, I decided to solve Advent of Code in Rust this time. This worked (un)surprisingly well.

One doesn’t need blazing fast performance to solve Advent of Code tasks, but they are small and easy enough to try a new language.

Iterators

The only thing bothered me everytime, was the need to call .iter() and .collect() almost every time I wanted to process a collection. Iterators in Rust are complicated. I’m not used to it in Kotlin.

Task 3. Small webserver

My personal website, which you are reading now, is statically generated with Hugo (highly recommend it by the way). I’m satisfied with this approach, however, sometimes I want to add some interactivity to some pages.

For example, I recently added a ’now playing’ tile to my now page, which shows the current music I’m listening to on Spotify. And again, to hone my Rust skills, I’ve implemented the API endpoint for this in Rust.

There are already established libraries for this task: tokio for asynchronous tasks, axum as the Web framework, and reqwest for HTTP requests. I may have used Spotify API wrappers or existing OAuth2 clients, but decided to just issue few raw requests to refresh token and checking the player state.

I cache the current music in memory for a few minutes to throttle Spotify API requests. If there is a valid response, it is served instantly from the memory.

It took me just a few hours to build the whole thing, so I’m pretty happy with it.

I’ve enjoyed my first Rust experience and hope I’ll get a chance to apply it in other real-world projects.

100 push-ups a day challenge

2024-04-10 23:28:23

Photo by Lopez Robin on Unsplash

Photo by Lopez Robin on Unsplash

In March 2024, I’ve challenged myself to do 100 (one hundred) push-ups a day every day for a month. It was a second attempt after I failed to do so in January due to illnesses and consequently poor fitness.

Here’s what I’ve learned.

Start small

A hundred push-ups a day over a month gives us a total of 3000 push-ups. That’s a lot. Guiness World Records has registered a record of 3249 push-ups in an hour! I wouldn’t even try doing this.

However, after thinking a bit about 3000 repetitions, if I now get back to a hundred, it seems so much more manageable. So, let’s get even further, and divide it to ten times ten.

This scaled down challenge is definitely achievable. I can do ten push-ups, I know this for sure! All I need now is to repeat the feat ten times a day.

Strive for consistency

And to do this, I just need to make it a habit. For example, it’s pretty easy to do ten push-ups every time I stand up from my desk. I do it more than ten times per day to take in some fluids or relieve myself from other fluids.

So, now every time I get up from my desk, I do ten push-ups. And I continue doing so even after I’ve finished the challenge.

Fight boredom

At the beginning of every challenge you feel excitement, adrenaline rushes through your body. Several days later, you’re still in the very beginning, but already tired, busy, and bored.

Make it entertaining, playful. Try awarding yourself upon completion, for example.

Try variations of the task. There are many ways to do push-ups, and I tried tens of them during this month. Incorporate the challenge task into some other activity. I did some push-ups

Dale Carnegie talked about this in his books, telling stories about people bored at work who found what inspired them to continue, and made them happier.

Master through repetition

At the end of the first week (back in January), I realized that I never knew how to do push-ups before. Only after seven days a hundred repetitions each, I started feeling my body as a push-up machine.

Small additions sum up!

Don’t quit!

Find what motivates you, whether it is a row of green ticks in your calendar or improved fitness.

Take care of yourself

Don’t quit too early, but also don’t push yourself too hard. It doesn’t bring any value. For example, if you’re sick, it’s ok to skip a day or more, or even abandon the challenge altogether and start again later, as I did.

Make a habit

And now I want to try other challenges, not necessarily fitness ones, and make them a habit.

March 2024 Reading List

2024-03-28 15:19:44

Let’s not waste time and get straight to it!

Read it later

List of 2024 Leap Day Bugs

I published the previous edition of this digest exactly on February 29 and didn’t even notice that. I haven’t seen any of these bugs, but many of them have been verified by others.

Falsehoods programmers believe about time zones

Even if you were lucky enough to avoid any leap day bugs, date & time handling on your computer still hides many surprises.

UsWare vs. ThemWare

I totally agree that much of the best software is the best because the programmers are the users, too.

Steve Jobs Said the Best Employees Focus on Content, Not Process. Research Shows He Was Right

This article nicely complements the previous one: to make a great product, one needs to be driven by the idea, not the process.

A short history of the O’Reilly animals

I’m pretty sure you have one of these books on your bookshelf. And here is the full list of animals ever appeared on O’Reilly covers.

Why do we use apostrophes to show possession?

The history of apostrophe.

Apple Fitness+ Studios Behind the Scenes: From Start to Finish

Behind the Scenes type of posts/videos always fascinate me. Here’s the one by Ray Maker, a renowned sports tech reviewer, visiting the Apple Fitness+ studios. Especially interesting to me, as I’m trialing the service these days.

App of the Month

Itsycal

I’ve reduced standard menubar widget to display time only (unfortunately, it is no longer possible to hide it completely) and use Itsycal to glance over my agenda and to quickly connect to lots of calls I have daily.

GitHub Highlight of the Month

Github davedelong/time

Swift package to manipulate dates and time has seen its first release on February 29. Perfect timing!

Once upon a time on Wikipedia

To complete this post dedicated to dates and calendars.

π Day

Pi Day is observed on March 14 (the 3rd month) since 3, 1, and 4 are the first three significant figures of mathematical constant π.

PS And don’t forget that Daylight Saving Time starts in Europe this Sunday. The EU wanted to end it back in 2019, but never finished the reform. Alas.

February 2024 Reading List

2024-02-29 21:43:44

Here’s another digest of articles I found on the Internet last month. Initially, I wanted to keep the list short and publish exactly five links every month, but as soon as I started consciously collecting them, I realized that the limit is too low and I raised it to a dozen.

Enjoy!

Read it later

Airfoil

Another article full of mindblowing visualizations by Bartosz Ciechanowski. Make sure also check his previous works. GPS and Mechanical Watch are among my favorites.

Apple’s Plans for the DMA in the European Union

Detailed breakdown of upcoming iOS changes required by the EU Digital Markets Act.

In Loving Memory of Square Checkbox

Niki Tonsky explores the history of checkboxes and radio buttons.

Creating video from text

An impressive demo of OpenAI’s new generative AI model. Some videos came straight from the uncanny valley, but it’s still an absolutely new level compared to anything we’ve seen before.

The Martian: Lost Sols

Andy Weir celebrates the 10th anniversary of The Martian (one of my favorite sci-fi books) with an additional chapter of Mark Watney’s diary.

A free DLC for a book? We truly live in the age of wonders.

The Cab Ride I’ll Never Forget

A short essay. Just read it.

How can we keep domains working long after our death?

Chuck Grimmet explores the topic of online legacy. Check out the comments too.

App of the Month

Mela

I discovered Mela in App Defaults of many other participants and immediately fell in love with the app. We’ve migrated all recipes there since then.

The app has iOS, iPad and Mac versions, and it is a one-time purchase.

GitHub Highlight of the Month

Github JetBrains/compose-multiplatform

Compose is a multiplatform declarative UI framework for Kotlin. It originates from Android, but is now available for macOS, Windows, Linux, Web, and iOS. I’ve been using it on desktop for several years already, and this month I joined the team to start working on the framework itself.

I didn’t have enough time to make any impact yet, but I’m already excited with the opportunity.

Once upon a time on Wikipedia

This time a Wikipedia link is hidden somewhere above 😉

My private garden

2024-02-06 18:26:20

This website is very own private garden on the world wide web. Here I express myself, here I can experiment and do whatever I want. I enjoy improving it when I have some free time, it’s like watering plants or removing weeds from the lawn.

Here are some enhancements I implemented in the last few months.

RSS Feed

Since the death of Google Reader, I struggled to find a good replacement. Feedly didn’t work nearly as well for me. My usage of RSS declined and was replaced by Twitter.

Then came Elon Musk and killed Twitter. In the search for the new source of updates, I discovered NetNewsWire and started actively using RSS feeds again. And, of course, I made sure that my RSS feed is in order.

RSS Feed of this blog as seen in Google Chrome

RSS Feed of this blog as seen in Google Chrome

Inspired by a blog post I’ve seen somewhere, I flexed my XSLT skills and applied some CSS to my RSS. Safari users will not see this, as it will automatically suggest subscribing, but for other browsers it looks much better than raw XML.

CSS

I’ve updated the main stylesheet as well to better support dark theme and to incorporate A (more) Modern CSS Reset instead of simple outdated rules I used before.

Now and Uses

Thanks to all the participants of App Defaults sharing initiative, I discovered similar concepts which existed long ago:

Now and Uses pages

Now and Uses pages

There is a theme switcher at the bottom of every page. Previously, the system theme was always used, and it is still the default, but now it can be changed.

Theme switcher at the bottom of every page

Theme switcher at the bottom of every page

The footer has now also links to my social networks. And a nice Creative Commons logo instead of the copyright symbol.

Playroom

I like collecting stuff, so since I got PlayStation several years ago, I started collecting Platinum trophies.

I don’t pursue Platinum in every game, and before starting the challenge I always check the guide on powerpyx.com. The Platinum difficulty and the amount of hours are important factors in the consideration. Of course, the game should be interesting too.

My PlayStation Platinum trophies

My PlayStation Platinum trophies

My Playroom page also lists other games I played on my PlayStation recently.

Screenshots

This blog post is full of screenshots, and you should take more screenshots too.

January 2024 Reading List

2024-01-26 03:20:44

Welcome to the second edition of my monthly reading list, where I collect articles, websites, and videos worth spending some time with.

Although January is the month of CES I haven’t seen anything interesting there. Instead, let’s take a look at some beautiful Macs.

Read it later

Happy 40th Birthday, Macintosh

A continuous stream of random Macs — just keep clicking “Show me more Macs” and that’s what you’ll get. If you’re a hard core Mac fan, this site should keep you busy for a very long time.

What idea changed how you view the world?

A Twitter thread describing a powerful idea of “High Agency.”

52 Interesting Things I Learned in 2023

I need to start writing down a similar list too.

Incentives and the Cobra Effect

Be careful, actions may have an opposite effect.

What I Wish Someone Had Told Me

Sam Altman of OpenAI shares the lesson he learned through experience.

App of the Month

Journal

I highlighted the Journal app in my end-of-year review, and ever since then I use it even more. What’s important, I not only write it, but also read and re-read previous entries.

Reviewing and reflecting are the key.

GitHub Highlight of the Month

Github graphicore/librebarcode

Never thought about it, but a barcode can be generated by a plain text input rendering in a specific font.

Once upon a time on Wikipedia

List of lists of lists

There are lots of different lists on Wikipedia, for example, a list of Formula 1 World Champions.

Some lists are related, so there are lists of lists, for example, a list of cities in different parts of the world.

Surely, there is also a List of lists of lists which lists lists of lists. And because it is a list of lists itself, it has a recursive link to itself.